<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                template="../templates/principal.xhtml">

    <ui:define name="content" id="content">
        <h1 class="title ui-widget-header ui-corner-all">Bem Vindo ao Cadastro de Usuários</h1>

        <h:form id="frmUsuario">
            <p:dataTable id="tabUsuario" widgetVar="wtabUsuario" var="usuario" value="#{usuarioBean.lazyModel}" paginator="true" rows="12" lazy="true"
                         emptyMessage="Nenhum Registro Retornado ..." rowSelectListener="#{usuarioBean.onSelectRowCliente}"
                         selection="#{usuarioBean.selectedUsuario}" selectionMode="single"
                         onRowSelectComplete="usuarioDialog.show()" onRowSelectUpdate="panel, display">

                <f:facet name="header">
                    Selecione uma linha e clique para Manutenção
                </f:facet>

                <p:column headerText="Nome" sortBy="#{usuario.nomUsuario}" filterBy="#{usuario.nomUsuario}">
                    <h:outputText value="#{usuario.nomUsuario}" />
                </p:column>

                <p:column headerText="E-Mail" sortBy="#{usuario.dscEmail}" filterBy="#{usuario.dscEmail}">
                    <h:outputText value="#{usuario.dscEmail}" />
                </p:column>

                <p:column headerText="Status" sortBy="#{usuario.tipStatus}" filterBy="#{usuario.tipStatus}">
                    <h:outputText value="#{usuario.tipStatus}" />
                </p:column>

                <p:column headerText="Tipo" sortBy="#{usuario.tipUsuario}" filterBy="#{usuario.tipUsuario}">
                    <h:outputText value="#{usuario.tipUsuario}" />
                </p:column>
            </p:dataTable>

            <p:dialog id="dialog" header="Detalhes Usuario" widgetVar="usuarioDialog" resizable="true"
                      width="800" showEffect="explode" hideEffect="explode">
                <p:panel id="panel">
                    <h:panelGrid id="display" columns="2" style="margin-bottom:50px" cellpadding="5">
                        <h:outputText value="Nome:" />
                        <p:inputText id="nome" value="#{usuarioBean.selectedUsuario.nomUsuario}" style="width:500px; font-weight:bold;" />

                        <h:outputText value="E-Mail:" />
                        <p:inputText id="email" value="#{usuarioBean.selectedUsuario.dscEmail}" style="width:500px; font-weight:bold;" />

                        <h:outputText value="Tipo de Usuário:" />
                        <h:selectOneMenu id="soTipoUsuario" value="#{usuarioBean.selectedUsuario.tipUsuario}">
                            <f:selectItem itemLabel="Administrador" itemValue="Administrador" />
                            <f:selectItem itemLabel="Usuário Normal" itemValue="Usuário Normal" />
                        </h:selectOneMenu>

                        <h:outputText value="Status do Usuário:" />
                        <h:selectOneMenu id="soStatusUsuario" value="#{usuarioBean.selectedUsuario.tipStatus}">
                            <f:selectItem itemLabel="Ativo" itemValue="Ativo" />
                            <f:selectItem itemLabel="Desativado" itemValue="Desativado" />
                        </h:selectOneMenu>

                        <h:outputText value="Login:" />
                        <p:inputText id="username" value="#{usuarioBean.selectedUsuario.usrName}" style="width:250px; font-weight:bold;" />

                        <h:outputText value="Senha:" />
                        <p:password id="password1" value="#{usuarioBean.password1}" style="width:250px; font-weight:bold;" 
                                    minLength="4" feedback="false" />

                        <h:outputText value="Confirme a Senha:" />
                        <p:password id="password2" value="#{usuarioBean.password2}" style="width:250px; font-weight:bold;" 
                                    minLength="4" feedback="false" />
                        <f:facet name="footer">
                            <p:panel id="panelModulo">
                                <h:outputText value="Modulos:" />
                                <p:tree value="#{usuarioBean.root}" var="node" id="checkboxTree" selectionMode="checkbox"
                                        selection="#{usuarioBean.selectedNodes}" propagateSelectionDown="true" propagateSelectionUp="true">

                                    <p:treeNode>
                                        <h:outputText value="#{node}" />
                                    </p:treeNode>
                                </p:tree>
                            </p:panel>
                        </f:facet>
                    </h:panelGrid>
                    <p:commandButton value="Novo" image="ui-icon ui-icon-folder-open" title="Clique para Inserir um novo Usuario" 
                                     update="panel, display" action="#{usuarioBean.novo}" oncomplete="usuarioDialog.show()" />
                    <p:commandButton id="btInserir" value="Inserir" update="messages,tabUsuario,display" 
                                     actionListener="#{usuarioBean.inserir}" oncomplete="usuarioDialog.hide()" rendered="#{usuarioBean.disable1}" />
                    <p:commandButton id="btAlterar" value="Alterar" update="messages,tabUsuario,display"
                                     actionListener="#{usuarioBean.alterar}" oncomplete="usuarioDialog.hide()" rendered="#{usuarioBean.disable2}" />
                    <p:commandButton id="btExcluir" value="Excluir" onclick="confirmation.show()" type="button" rendered="#{usuarioBean.disable2}" />
                </p:panel>
            </p:dialog>

            <p:confirmDialog message="Confirma a Exclusão desse Usuario?"
                             showEffect="bounce" hideEffect="explode"
                             header="Exclusão do Usuario" severity="alert" widgetVar="confirmation">

                <p:commandButton value="Sim" update="messages,tabUsuario,display" oncomplete="confirmation.hide(),usuarioDialog.hide()"
                                 actionListener="#{usuarioBean.excluir}" />
                <p:commandButton value="Não" onclick="confirmation.hide()" type="button" />

            </p:confirmDialog>

        </h:form>
    </ui:define>
</ui:composition>